import moment from 'moment';

/**
 * 过滤出对象中属性值为时间格式，并转化为回填表单的时间格式
 * data 为需要转化的对象
 */
function filterTimeProperties(data: any) {
  let obj: any = {};
  if (data.target && typeof data.target === 'object' && Object.keys(data.target).length !== 0) {
    // 将对象中target对象中的内容平铺
    obj = { ...data.target, ...data };
    delete obj.target;
  } else {
    obj = { ...data };
  }
  for (const key in obj) {
    if (data.hasOwnProperty(key)) {
      const value = data[key];
      // 使用正则表达式检查是否为YYYY-MM-DD或YYYY-MM-DD HH:MM:SS格式
      const dateRegex = /^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2})?$/;
      if (dateRegex.test(value)) {
        // 如果是时间格式，转化为回填表单的时间格式
        obj[key] = moment(obj[key]);
      }
    }
  }
  return obj;
}

function submitTimeProperties(data: Object) {
  for (const key in data) {
    if (data.hasOwnProperty(key)) {
      const value = data[key];
      // 使用正则表达式检查是否为标准时间(2024-01-13T07:39:20.673Z)格式
      const dateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/;
      // 校验日期格式 进行format
      if (dateRegex.test(value) || moment.isMoment(value)) {
        // 如果是标准时间格式，转化为YYYY-MM-DD或YYYY-MM-DD HH:MM:SS的时间格式
        data[key] = moment(value)?.format('YYYY-MM-DD HH:mm:ss');
      }
    }
  }
  return data;
}

export { filterTimeProperties, submitTimeProperties };
